<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <script>

        // js代码的执行分两个阶段
        //    预编译
        //        把var和具名函数提升到最前面
        //    执行阶段
        //        自上而下执行


        // 你看到的代码
        // console.log(a);    // 没有报错了 ， undefined
        // var a = 1;

        // js真正解析的
        //  1 预解析   把var和具名函数提升到最前面
        // var a;
        // console.log(a);   // undefined
        // a = 1;


        // 你看到的代码
        // f();
        // function f() {
        //     console.log(666);
        // }

        // js真正解析的
        // function f() {
        //     console.log(666);
        // }
        // fn();


        // 你看到的代码
        // f();    // f is not a  function
        // var f = function () {
        //     console.log(999);
        // }

        // js真正解析的
        // var f ;
        // f() ;   // f此时是undefined , 他不是函数，所以报错  f is not a function
        // f = function(){
        //     console.log(999);
        // }

        // 你看到的
        // f();
        // function f() {
        //     console.log(a);
        // }
        // var a = 1;

        // js真正解析的
        // var a ;
        // function f() {
        //     console.log(a);
        // }
        // f();
        // a = 1 ;



    </script>

</body>

</html>